<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
    margin: 0;
    padding: 0;
}
.tab{
    width: 600px;
    margin: 100px auto 0;
}
.options{
    overflow: hidden;
    border-top: 2px solid #06A86E;
}
.options h3{
    float: left;
    width: 150px;
    height: 40px;
    line-height: 40px;
    text-align: center;
    background-color: #F7F8F8;
    font-size: 18px;
    font-weight: normal;
    color: #666;
    cursor: pointer;
}
.contents{
    height: 200px;
    padding: 10px 0;
    overflow: hidden;
}
.contents div{
    overflow: hidden;
    margin-bottom: 10px;
    display: none;
}
.contents div img{
    width: 150px;
    height: 200px;
    float: left;
}
/* 选中状态的样式 */
.options h3.active{
    color: #fff;
    background-color: #06A86E;
}
.contents div.show{
    display: block;
}
</style>
</head>
<body>
    
<!-- 最外层容器 -->
<div class="tab">
    <!-- 选项区 -->
    <div class="options">
        <!-- <h3 class="active">科幻</h3>
        <h3>爱情</h3>
        <h3>动作</h3>
        <h3>喜剧</h3> -->
    </div>
    <!-- 内容区 -->
    <div class="contents">
        <div class="show">
            <!-- <img src="./imgs/e1.png" alt="">
            <img src="./imgs/e1.png" alt="">
            <img src="./imgs/e1.png" alt="">
            <img src="./imgs/e1.png" alt=""> -->
        </div>
    </div>
</div>

<script>
// 选项卡切换（tab切换）
// 最基础 最实用 最广泛
// 要求：必须要熟练掌握原理和具体实现！！！
// 目的：节约空间，提高用户体验

// 选项卡切换的关键思路：
// 1.每一个选项都有一个点击事件
// 2.当前点击选项添加选中状态，其他选项去掉选中状态
// 3.当前点击选项对应的内容显示，其他内容隐藏

// 结构布局：
// 分两个区域：1.选项区  2.内容区

// 选项卡的数据
var datas = {
    options: ['喜剧1','科幻1','动作1','爱情1'],
    contents: [
        ['./imgs/e1.png','./imgs/e1.png','./imgs/e1.png','./imgs/e1.png'],
        ['./imgs/e2.png','./imgs/e2.png','./imgs/e2.png','./imgs/e2.png'],
        ['./imgs/e3.png','./imgs/e3.png','./imgs/e3.png','./imgs/e3.png'],
        ['./imgs/e4.png','./imgs/e4.png','./imgs/e4.png','./imgs/e4.png']
    ]
}

// 获取元素
var options = document.querySelector('.options');
var show = document.querySelector('.show');
var template1 = '';// 空模板
var template2 = '';// 空模板

// 初始化选项卡:
datas.options.forEach(function (item){
    template1 += '<h3>'+item+'</h3>';
})
// 将拼接好的结构添加到options中
options.innerHTML = template1;
// 默认选中第一个选项
options.firstElementChild.className = 'active';
// 默认显示第一个选项的内容
datas.contents[0].forEach(function(item) {
    template2 += '<img src="'+item+'" alt="">';
})
// 将拼接好的结构添加到show中
show.innerHTML = template2;

// 选项卡切换
var prevIndex = 0;// 记录上次选中项的索引
// 给每一选项添加点击事件
for (var i = 0; i < options.children.length; i++) {
    // 给每一个选项添加index属性记录索引
    options.children[i].index = i;
    options.children[i].onclick = function (){
        // 去掉上次选中项的选中状态
        options.children[prevIndex].className = '';
        // 当前选中项的添加选中状态
        this.className = 'active';
        // 更新上次选中项的索引
        prevIndex = this.index;

        // 显示选中项的内容
        template2 = '';
        datas.contents[this.index].forEach(function(item) {
            template2 += '<img src="'+item+'" alt="">';
        })
        // 将拼接好的结构添加到show中
        show.innerHTML = template2;
    }
}

</script>
</body>
</html>